package prh25.biblioteca.entity;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.OneToMany;



/**
 * @author Wilson
 */
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Usuario extends AbstractEntity {

	private static final long serialVersionUID = 1L;

	@Basic
	private String tipo;

	@Basic
	private String login;

	@Basic
	private String senha;
	
	@Basic
	private boolean ativo;
	
	

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "usuario")
	private Set<Documento> documentos = new HashSet<Documento>();
	
	/**
	 * Construtor vazio da classe Usuario.
	 */
	public Usuario(){
		this.uid();
		this.ativo = false;
	}
	
	/**
	 * 
	 * @return O tipo do usuario: aluno, professor, coordenador, revisou ou
	 * usuario externo.
	 */
	public String getTipo() {
		return tipo;
	}

	/**
	 * Altera o tipo de usuario.
	 * @param tipo
	 */
	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	/**
	 * 
	 * @return Os documentos de um usuario.
	 */
	public Set<Documento> getDocumentos() {
		return documentos;
	}

	/**
	 * Altera os documentos de um usuario.
	 * @param documentos - Os novos documentos do usuario.
	 */
	public void setDocumentos(Set<Documento> documentos) {
		this.documentos = documentos;
	}

	/**
	 * 
	 * @return O login do usuario.
	 */
	public String getLogin() {
		return login;
	}

	/**
	 * Altera o login do usuario.
	 * @param login - O novo login do usuario.
	 */
	public void setLogin(String login) {
		this.login = login;
	}

	/**
	 * 
	 * @return A senha do usuario.
	 */
	public String getSenha() {
		return senha;
	}

	/**
	 * Altera a senha do usuario.
	 * @param senha - A nova senha do usuario.
	 */
	public void setSenha(String senha) {
		this.senha = senha;
	}

	/**
	 * 
	 * @return Se um usuario estah ativo ou nao.
	 */
	public boolean getAtivo() {
		return ativo;
	}

	/**
	 * Altera o status do usuario no sistema.
	 * @param ativo - O novo status do usuario.
	 */
	public void setAtivo(boolean ativo) {
		this.ativo = ativo;
	}

}
